Skip to content

hassanhabib/EFxceptions

Repository files navigation

.NET The Standard - COMPLIANT

EFxceptions

preview version

We have designed and developed this library as a wrapper around the existing EntityFramework DbContext implementation to provide the following values:

  1. Meaningful Exceptions for SQL error codes.
  2. Simplified integrations
  3. Test-friendly implementation.

EFxeptions.Identity

preview version

A dedicated EFxeptions port that provides an EFxceptionContext that inherits from Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext to inherit from, to support Microsoft ASP.Core Identity using EF Core. Available in the EFxceptions.Identity package.

Installation

You can get EFxceptions Nuget package by typing:

Install-Package EFxceptions

Integration

Replace your existing DbContext class with EFxceptionsContext (or your IdentityDbContext with EFxeption.EFxceptionIdentityContext) as follows:

Before:

    public partial class StorageBroker : DbContext, IStorageBroker
    {
        public StorageBroker(DbContextOptions<StorageBroker> options)
            : base(options) => this.Database.Migrate();
    }

After:

    public partial class StorageBroker : EFxceptionsContext, IStorageBroker
    {
        public StorageBroker(DbContextOptions<StorageBroker> options)
            : base(options) => this.Database.Migrate();
    }

Supported SQL Error Codes

SQL server supports over 41,000 error codes, here's the codes that this library supports so far:

Code Meanings Exception
207 Invalid column name '%.*ls'. InvalidColumnNameException
208 Invalid object name '%.*ls'. InvalidObjectNameException
547 The %ls statement conflicted with the %ls constraint "%.*ls". The conflict occurred in database "%.*ls", table "%.*ls"%ls%.*ls%ls. ForeignKeyConstraintConflictException
2627 Violation of %ls constraint '%.*ls'. Cannot insert duplicate key in object '%.*ls'. DuplicateKeyException

This library is forever growing as we add more exceptions and codes into it, we appreciate any contributions as there are so many codes we need to cover, so please stay tuned.


If you have any suggestions, comments or questions, please feel free to contact me on:
Twitter: @hassanrezkhabib
LinkedIn: hassanrezkhabib
E-Mail: hassanhabib@live.com